#!/bin/bash
export LANG=zh_CN.UTF-8
HIVE_HOME=/usr/bin/hive
SQOOP_HOME=/usr/bin/

${HIVE_HOME} -S -e "
-- 建库
-- 创建ODS层
Create DataBase If Not Exists zx_ods;

-- 切换库
Use zx_ods;

-- 建表
-- todo 学生打卡信息表 tbh_student_signin_record
Drop Table If Exists zx_ods.tbh_student_signin_record;
Create Table If Not Exists zx_ods.tbh_student_signin_record(
    id                Int      Comment '主键id',
    normal_class_flag Int      Comment '是否正课 1 正课 2 自习',
    time_table_id     Int      Comment '作息时间id 关联tbh_school_time_table 或者 tbh_class_time_table',
    class_id          Int      Comment '班级id',
    student_id        Int      Comment '学员id',
    signin_time       String   Comment '签到时间',
    signin_date       String   Comment '签到日期',
    inner_flag        Int      Comment '内外网标志  0 外网 1 内网',
    signin_type       Int      Comment '签到类型 1 心跳打卡 2 老师补卡',
    share_state       Int      Comment '共享屏幕状态 0 否 1是  在上午或下午段有共屏记录，则该段所有记录该字段为1，内网默认为1 外网默认为0 ',
    inner_ip          String   Comment '内网ip地址'
) Comment '学生打卡信息表'
Row Format Delimited Fields Terminated By '\t'
Stored As ORC Tblproperties ('orc.compress' = 'ZLIB');

-- todo 班级作息时间表 tbh_class_time_table
Drop Table If Exists zx_ods.tbh_class_time_table;
Create Table If Not Exists zx_ods.tbh_class_time_table(
    id                    Int      Comment '主键id',
    class_id              Int      Comment '班级id',
    morning_template_id   Int      Comment '上午出勤模板id',
    morning_begin_time    String   Comment '上午开始时间',
    morning_end_time      String   Comment '上午结束时间',
    afternoon_template_id Int      Comment '下午出勤模板id',
    afternoon_begin_time  String   Comment '下午开始时间',
    afternoon_end_time    String   Comment '下午结束时间',
    evening_template_id   Int      Comment '晚上出勤模板id',
    evening_begin_time    String   Comment '晚上开始时间',
    evening_end_time      String   Comment '晚上结束时间',
    use_begin_date        String   Comment '使用开始日期',
    use_end_date          String   Comment '使用结束日期',
    create_time           String   Comment '创建时间',
    create_person         Int      Comment '创建人',
    remark                String   Comment '备注'
) Comment '班级作息时间表'
Row Format Delimited Fields Terminated By '\t'
Stored As ORC Tblproperties ('orc.compress' = 'ZLIB');

-- todo 班级排课信息表 course_table_upload_detail
Drop Table If Exists zx_ods.course_table_upload_detail;
Create Table If Not Exists zx_ods.course_table_upload_detail(
    id                  Int     Comment 'id',
    base_id             Int     Comment '课程主表id',
    class_id            Int     Comment '班级id',
    class_date          String  Comment '上课日期',
    content             String  Comment '课程内容',
    teacher_id          Int     Comment '老师id',
    teacher_name        String  Comment '老师名字',
    job_number          String  Comment '工号',
    classroom_id        Int     Comment '教室id',
    classroom_name      String  Comment '教室名称',
    is_outline          Int     Comment '是否大纲 0 否 1 是',
    class_mode          Int     Comment '上课模式 0 传统全天 1 AB上午 2 AB下午 3 线上直播',
    is_stage_exam       Int     Comment '是否阶段考试（0：否 1：是）',
    is_pay              Int     Comment '代课费（0：无 1：有）',
    tutor_teacher_id    Int     Comment '晚自习辅导老师id',
    tutor_teacher_name  String  Comment '辅导老师姓名',
    tutor_job_number    String  Comment '晚自习辅导老师工号',
    is_subsidy          Int     Comment '晚自习补贴（0：无 1：有）',
    answer_teacher_id   Int     Comment '答疑老师id',
    answer_teacher_name String  Comment '答疑老师姓名',
    answer_job_number   String  Comment '答疑老师工号',
    remark              String  Comment '备注',
    create_time         String  Comment '创建时间'
) Comment '班级排课信息表'
Row Format Delimited Fields Terminated By '\t'
Stored As ORC Tblproperties ('orc.compress' = 'ZLIB');

-- todo 在读学员人数信息表 class_studying_student_count
Drop Table If Exists zx_ods.class_studying_student_count;
Create Table If Not Exists zx_ods.class_studying_student_count(
    id                     int ,
    school_id              int    comment '校区id',
    subject_id             int    comment '学科id',
    class_id               int    comment '班级id',
    studying_student_count int    comment '在读班级人数',
    studying_date          String comment '在读日期'
) comment '在读学员人数信息表'
Row Format Delimited Fields Terminated By '\t'
Stored As ORC Tblproperties ('orc.compress' = 'ZLIB');

-- todo 学生请假申请表 student_leave_apply
Drop Table If Exists zx_ods.student_leave_apply;
Create Table If Not Exists zx_ods.student_leave_apply(
    id              int ,
    class_id        int     comment '班级id',
    student_id      int     comment '学员id',
    audit_state     int     comment '审核状态 0 待审核 1 通过 2 不通过',
    audit_person    int     comment '审核人',
    audit_time      String  comment '审核时间',
    audit_remark    String  comment '审核备注',
    leave_type      int     comment '请假类型  1 请假 2 销假',
    leave_reason    int     comment '请假原因  1 事假 2 病假',
    begin_time      String  comment '请假开始时间',
    begin_time_type int     comment '1：上午 2：下午',
    end_time        String  comment '请假结束时间',
    end_time_type   int     comment '1：上午 2：下午',
    days            String  comment '请假/已休天数',
    cancel_state    int     comment '撤销状态  0 未撤销 1 已撤销',
    cancel_time     String  comment '撤销时间',
    old_leave_id    int     comment '原请假id，只有leave_type =2 销假的时候才有',
    leave_remark    String  comment '请假/销假说明',
    valid_state     int     comment '是否有效（0：无效 1：有效）',
    create_time     String  comment '创建时间'
) comment '学生请假申请表'
Row Format Delimited Fields Terminated By '\t'
Stored As ORC Tblproperties ('orc.compress' = 'ZLIB');

"

echo '========================================'
echo '=============开始全量导入==============='
echo '========================================'

# todo 注意：sqoop导入命令要在 /usr/bin 目录下使用，或者在命令前直接添加

# todo 学生打卡信息表 tbh_student_signin_record
${SQOOP_HOME}sqoop import \
--connect jdbc:mysql://192.168.88.80:3306/teach \
--username root \
--password 123456 \
--query "Select * From tbh_student_signin_record Where 1=1 And \$CONDITIONS" \
--hcatalog-database zx_ods \
--hcatalog-table tbh_student_signin_record \
-m 1

wait 3

# todo 班级作息时间表 tbh_class_time_table
${SQOOP_HOME}sqoop import \
--connect jdbc:mysql://192.168.88.80:3306/teach \
--username root \
--password 123456 \
--query "Select * From tbh_class_time_table Where 1=1 And \$CONDITIONS" \
--hcatalog-database zx_ods \
--hcatalog-table tbh_class_time_table \
-m 1

wait 3

# todo 班级排课信息表 course_table_upload_detail
${SQOOP_HOME}sqoop import \
--connect jdbc:mysql://192.168.88.80:3306/teach \
--username root \
--password 123456 \
--query "Select * From course_table_upload_detail Where 1=1 And \$CONDITIONS" \
--hcatalog-database zx_ods \
--hcatalog-table course_table_upload_detail \
-m 1

wait 3

# todo 在读学员人数信息表 class_studying_student_count
${SQOOP_HOME}sqoop import \
--connect jdbc:mysql://192.168.88.80:3306/teach \
--username root \
--password 123456 \
--query "Select * From class_studying_student_count Where 1=1 And \$CONDITIONS" \
--hcatalog-database zx_ods \
--hcatalog-table class_studying_student_count \
-m 1

wait 3

# todo 学生请假申请表 student_leave_apply
${SQOOP_HOME}sqoop import \
--connect jdbc:mysql://192.168.88.80:3306/teach \
--username root \
--password 123456 \
--query "Select * From student_leave_apply Where 1=1 And \$CONDITIONS" \
--hcatalog-database zx_ods \
--hcatalog-table student_leave_apply \
-m 1

echo '========================================'
echo '===========全部数据导入完成============='
echo '========================================'

